#ifndef COORDINATEX_H_
#define COORDINATEX_H_

#include <vector>

#include "VerticalCardinal.h"

namespace catan
{

class CoordinateX
{
public:
	enum Enum_CoordinateX { X0 = 0, X1 = 1, X2 = 2, X3 = 3, X4 = 4, X5 = 5, X6 = 6 };

	static const std::vector<Enum_CoordinateX> &getVectorOfPossibleEnumValues();
	static bool canInit(Enum_CoordinateX enumX);
	
	explicit CoordinateX(Enum_CoordinateX enumX);
	Enum_CoordinateX getEnum() const;
	bool canCreateNeighbor(VerticalCardinal verticalCardinal) const;
	CoordinateX createNeighbor(VerticalCardinal verticalCardinal) const;
	bool operator==(const CoordinateX &other) const;
	bool operator<(const CoordinateX &other) const;
	CoordinateX& operator=(const CoordinateX& other);
	
private:
	static std::vector<Enum_CoordinateX> vectorOfPossibleEnumValues;
	
	Enum_CoordinateX enumX;
};

static CoordinateX x0(CoordinateX::X0), x1(CoordinateX::X1), x2(CoordinateX::X2), x3(CoordinateX::X3), x4(CoordinateX::X4), x5(CoordinateX::X5), x6(CoordinateX::X6);

}

#endif /*COORDINATEX_H_*/
